import logging
from redis import StrictRedis


class Config(object):
    """项目的配置"""

    # 使用session要创建secret_key,用base64.b64encode(os.urandom(48))随机生成一个数值
    SECRET_KEY = 'ZVTZfEX4fvmwDJQFyz5j/k4Ld9ijyUSYdSuvDepKXjTnb2FPwSExcdWo3Be1oeD6'
    # 为数据库添加配置
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/information'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 请求完成之后提交数据到数据库
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    Redis_Host = '127.0.0.1'
    Redis_Port = 6379
    # 设置session保存在redis中,防止在服务器端保存大量session造成性能损失
    SESSION_TYPE = 'redis'
    # 设置session签名,使保护更严格
    SESSION_USE_SIGNER = True
    # 设置需要过期
    SESSION_PERMANENT = False
    # 指定session保存的库,如果不指定,会保存在默认创建的库中
    SESSION_REDIS = StrictRedis(host=Redis_Host, port=Redis_Port)
    # 设置session过期时间
    PERMANENT_SESSION_LEFTTIME = 86400 * 2
    # 默认日志等级
    LOG_LEVEL = logging.DEBUG


"""在不同的工作环境下,需要不同的配置信息"""


class DevelopmentConfig(Config):
    """开发环境配置信息"""
    DEBUG = True


class ProductionConfig(Config):
    """生产环境配置信息"""
    DEBUG = False
    # 设置日志等级
    LOG_LEVEL = logging.ERROR


class TestingConfig(Config):
    """测试环境配置信息"""
    DEBUG = True
    TESTING = True


config = {
    "development": DevelopmentConfig,
    "production": ProductionConfig,
    "testing": TestingConfig
}
